package configs

import (
	"github.com/spf13/viper"
	"log"
)

func Init() (interface{}, error) { //模块中供其他包调用的方法，首字母必须大写

	viper.SetConfigName("config")  // 配置文件名称
	viper.SetConfigType("yaml")    // 文件名无扩展名，需要显式指定
	viper.AddConfigPath("configs") // 也可以设置为工作目录

	if err := viper.ReadInConfig(); err != nil {
		if _, ok := err.(viper.ConfigFileNotFoundError); ok {
			// Config file not found; ignore error if desired
		} else {
			// Config file was found but another error was produced
		}
		log.Fatal(err)
	}

	c := viper.AllSettings() //获取所有配置

	return c, nil

}

//获取数据库配置信息
func GetDatabaseInfo() map[string]interface{} { //模块中供其他包调用的方法，首字母必须大写
	return viper.GetStringMap("common.database")
}

//获取redis配置信息
func GetRedisInfo() map[string]interface{} { //模块中供其他包调用的方法，首字母必须大写
	return viper.GetStringMap("common.redis")
}

//获取磁盘盘符配置信息
func GetDiskInfo() string { //模块中供其他包调用的方法，首字母必须大写
	return viper.GetString("common.disk.drive")
}

func GetCollectorIp() string { //模块中供其他包调用的方法，首字母必须大写
	return viper.GetString("common.collectorIp")
}

func GetCheckAlive() string {

	return viper.GetString("common.alive.checkAlive")
}

//获得收集评率
func GetCollectionRate() uint64 {
	return viper.GetUint64("common.collection.rate")
}

//获取环境变量
func GetEnvInfo(env string) string {
	viper.AutomaticEnv()
	return viper.GetString(env)
}
